An Application Programming Interface (API) is a specification that defines an interface for software components to communicate with each other. An API may include specifications for functions, data structures, object classes, and variables. Some examples of API specifications include the standard template library in C++, the Microsoft Windows API, libraries in C, and the Java API.
When an API specifies a function, the API provides information about how the function is called, what parameters are included in calling the function, and the format and type of data returned by the function. For example, an API may define a function “foo” as: int foo(int arg1, int arg2). In this example API, the function call foo takes two integer arguments (arg1 and arg 2), and returns an integer result. Using the function does not require knowledge of how the function is implemented as executable code. Rather, knowledge of the API specification may be all that is necessary. Further, the function may be executed by different system than the system issuing a function call for the function. Issuing function calls in this manner is referred to as a Remote Procedure Call (RPC). Generally, an RPC is an inter-process or inter-application communication that allows one computer system to cause a function to execute on another computer system.
One specific implementation of an RPC based API is a web service. A web service allows computer systems to communicate and interact with each other over the Internet. In particular, a web service may allow a computer system to request data processing and other services from remote computer systems utilizing Hypertext Transfer Protocol (HTPP) requests. One example of a web service is Google map web services. Google map web services include a number of publically accessible interfaces for map related services. For instance, the Google map street view interface lets a developer embed a street view for a particular location into a web page. A street view interface request is a HTTP Uniform Resource Locator (URL) having the following form: http://maps.googleapis.com/maps/api/streetview?parameters, where the parameters include the size of the image and the location of the street view to display.
Although API's such as Google's street view may provide significant value to developers, implementing new services using APIs may be difficult for smaller developers that do not have access to the resources of a company such as Google. Further, smaller developers typically make changes over time to APIs that make it difficult for systems utilizing the APIs to adapt accordingly.